【SymPy】(六)微积分 您所在的位置:网站首页 python sympy积分 【SymPy】(六)微积分

【SymPy】(六)微积分

#【SymPy】(六)微积分| 来源: 网络整理| 查看: 265

【SymPy】(六)微积分_sympy

【SymPy】(一)SymPy简介【SymPy】(二)使用SymPy需要避开的坑【SymPy】(三)基本操作(四)打印

【SymPy】(五)简化

文章目录 (六)微积分 1 导数Derivatives 2 积分 Integrals 3 极限 Limits 4 级数展开 Series Expansion 5 有限差分 Finite differences

(六)微积分 from sympy import * x, y, z = symbols('x y z')

本文代码在Jupyter QtConsole中执行。

1 导数Derivatives

计算表达式的导数,使用diff函数。

【SymPy】(六)微积分_sympy_02

diff可以同时求多次导数。若要求多次导,可根据需要多次传递变量,或者在变量后面传递一个数字。如:

【SymPy】(六)微积分_sympy_03

你也可以一次对许多变量求偏导。只需按顺序传递每个变量,使用与单变量导数相同的语法。

【SymPy】(六)微积分_sympy_04

diff也可以作为方法调用:

【SymPy】(六)微积分_sympy_05

要创建未计算的导数,请使用Derivative类。它的语法与diff相同。

【SymPy】(六)微积分_sympy_06

要计算未计算的导数,请使用doit方法。【SymPy】(六)微积分_sympy_07

可以使用元组(x,n)创建未指定次数的导数,其中n是导数相对于x的求导次数。

【SymPy】(六)微积分_sympy_08

2 积分 Integrals

要计算积分,使用integrate()。有两种积分,定积分和不定积分。要计算一个不定积分,只需在表达式后面传递变量。【SymPy】(六)微积分_sympy_09

注意,SymPy不定积分的结果不包括积分常数。如果你想,你可以自己加一个。

注: ∞ ∞ ∞在SymPy中是 oo

要计算定积分,请传递参数(积分变量、下限、上限)。 例如,计算: ∫ 0 ∞ e − x d x \int_{0}^{\infty} e^{-x} d x ∫0∞​e−xdx

【SymPy】(六)微积分_sympy_10

与不定积分一样,可以传递多个限制元组来执行多重积分。例如,计算 ∫ − ∞ ∞ ∫ − ∞ ∞ e − x 2 − y 2 d x d y \int_{-\infty}^{\infty} \int_{-\infty}^{\infty} e^{-x^{2}-y^{2}} d x d y ∫−∞∞​∫−∞∞​e−x2−y2dxdy【SymPy】(六)微积分_sympy_11

如果integrate无法计算积分,它将返回一个未赋值的Integral对象。

【SymPy】(六)微积分_sympy_12

Integrate使用不断改进的强大算法来计算定积分和不定积分,下面是其功能的示例:【SymPy】(六)微积分_sympy_13

【SymPy】(六)微积分_sympy_14

3 极限 Limits

SymPy可以用limit函数计算符号极限。 计算

lim ⁡ x → x 0 f ( x ) \lim _{x \rightarrow x_{0}} f(x) x→x0​lim​f(x)

的语法为: limit(f(x), x, x0),如:

【SymPy】(六)微积分_sympy_15

当要计算的点是间断点时,应使用limit而不是sub。另外,像 ∞ − ∞ ∞−∞ ∞−∞和 ∞ ∞ ∞∞ ∞∞这样的结果返回nan(不是数字)。例如

【SymPy】(六)微积分_sympy_16

像Derivative和 Integral一样,极限也有一个未赋值的对应项,Limit。要计算它,可使用doit。

【SymPy】(六)微积分_sympy_17

若要仅计算一侧的限制,请传递“+”或“-”作为限制的第四个参数。例如,计算 lim ⁡ x → 0 + 1 x \lim _{x \rightarrow 0^{+}} \frac{1}{x} x→0+lim​x1​

【SymPy】(六)微积分_sympy_18

另一侧:

【SymPy】(六)微积分_sympy_19

SymPy可以计算函数围绕一点的渐近级数展开。

4 级数展开 Series Expansion

SymPy可以计算函数在一点的渐近级数展开。 计算 f ( x ) f(x) f(x)在 x = x 0 x=x_0 x=x0​点附近的 n n n次方展开式,使用f(x).series(x,x0,n)。

x0和n可以省略,在这种情况下,将使用默认值x0=0和n=6。【SymPy】(六)微积分_sympy_20

末尾的 O ( x 4 ) O(x^4) O(x4)表示 x = 0 x=0 x=0时的 Landau 阶项(不要与计算机科学中使用的大 O O O表示法混淆,后者通常表示 x = ∞ x=∞ x=∞时的Landau 阶项)。这意味着所有的 x x x项的幂大于或等于 x 4 x^4 x4被省略。

O ( . ) O(.) O(.)自动地吸收比它高阶的项。在Sympy中它可以在 series之外创建和操作。

【SymPy】(六)微积分_sympy_21

如果你不需要 O ( ) O() O(),可使用removeO方法。

【SymPy】(六)微积分_sympy_22

O O O表示法支持0之外的任意极限点

【SymPy】(六)微积分_sympy_23

5 有限差分 Finite differences

如果我们想要一个表达式来估计一条曲线的导数,那么对于这条曲线,我们缺少一个封闭形式的表示,或者对于这条曲线,我们还不知道它的函数值。一种方法是使用有限差分法。

【SymPy】(六)微积分_sympy_24

如果已经有一个Derivative实例,则可以使用as_finite_difference方法生成任意阶导数的近似值:

【SymPy】(六)微积分_sympy_25

在这里,一阶导数用差分在 x x x附近近似,用步长1等距计算。

我们可以使用任意步长(可以包含符号表达式):【SymPy】(六)微积分_sympy_26

如果你只是对权重感兴趣,可以手动执行以下操作:

【SymPy】(六)微积分_sympy_27

如果觉得使用finite_diff_weights看起来比较复杂,而Derivative实例的as_finite_difference方法不够灵活,那么可以使用 apply_finite_diff, 它以 order, x_list, y_list和x0作为参数:

【SymPy】(六)微积分_sympy_28

未完待续:

【SymPy】(七)方程求解

【SymPy】(八)矩阵

【SymPy】(九)高级表达式操作



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

      专题文章
        CopyRight 2018-2019 实验室设备网 版权所有